<?php if (!defined('INDEX')) { trigger_error("Index is not defined!", E_USER_ERROR); exit(); }
/**
 * Абстрактный класс модулей, для сервиса закладок
 * @package      habrabookmarks
 *
 * @author       Max Kamashev <max.kamashev@floscoeli.com>
 * @copyright    floscoeli.com ©2009
 * @license      http://opensource.org/licenses/gpl-3.0.html
 * @version      SVN: $Id: services.php 30 2009-03-18 06:57:27Z M.Kamashev $
 *
 * settings:     ts: 4 spaces, eof: lf (unix), codepage: UTF-8
 */

/**
 * Абстрактный класс для сервиса закладок
 * @package      habrabookmarks
 */
abstract class Service {

    /**
     * User Agent
     * @var string
     * @access public
     */
    public $user_agent = "HabraBookmarks 0.2 http://floscoeli.com/ukko/habrabookmarks/";

    /**
     * Время ожидания ответа
     * @var int $timeout В секундах
     * @access public
     */
    public $timeout = 5;

    /**
     * Время ожидания передачи
     * @var int $transfer_timeout
     * @access public
     */
    public $transfer_timeout = 10;

    /**
     * Время на которое кэшируются данные DNS
     * @var int $dns_timeout
     * @access public
     */
    public $dns_timeout = 86400;

    /**
     * Принудительная задержка
     * @var int $delay в секундах
     * @access public
     */
    public $delay = 1;

    /**
     * Возможность экспорта букмарков
     * @var bool
     * @access public
     */
    public $export = FALSE;

    /**
     * Возможность импорта букмарков
     * @var bool
     * @access public
     */
    public $import = FALSE;

    /**
     * Метод, возвращающий краткое описание сервиса, не более 255 символов
     * @access public
     * @return string
     */
    abstract public function description();

    /**
     * Метод, возвращающий <strong>полную</strong>, т.е. расширенную информацию о сервисе.
     * Можно использовать безопасные html-теги (b,a,br,img...)
     * @return string
     */
    abstract public function help();

    /**
     * Абстрактный метод для экспорта закладок модулем
     * @param array mixed $bookmarks
     * @access public
     * @return bool
     */
    abstract public function exportBookmarks($bookmarks);

    /**
     * Абстрактный метод для импорта закладок.
     * @access public
     * @return array mixed || FALSE
     */
    abstract public function importBookmarks();

    /**
     * Отображает форму логина сайта с ИМПОРТИРУЕМЫМИ закладками
     * Т.е. откуда мы закладки берём
     * @access public
     * @return bool
     */
    abstract public function importFormRender();

    /**
     * Отображает форму логина сайта с ЭКСПОРТИРУЕМЫМИ закладками
     * т.е. куда мы закладки помещаем
     * @access public
     * @return bool
     */
    abstract public function exportFormRender();

    /**
     * Проверяет корректность пришедших данных для ЭКСПОРТА
     * @access public
     * @return bool
     */
    abstract public function exportValidate();

    /**
     * Проверяет корректность пришедших данных для ИМПОРТА
     * @access public
     * @return bool
     */
    abstract public function importValidate();
}